package com.hackathon;

import java.util.List;

import android.content.Context;
import android.graphics.Canvas;
import android.view.MotionEvent;

import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;

/**
 * タッチに反応してズーム倍率を変更するマップビュー
 * @author K.Kobayashi
 *
 */
public class MyMapView extends MapView {
	
	private float rad;
	private DRadarOverlay overlay;
	
	public MyMapView(Context arg0, String arg1) {
		super(arg0, arg1);
		// TODO 自動生成されたコンストラクター・スタブ
		setFocusable(true);
		
		overlay = new DRadarOverlay();
        List<Overlay> overlays = this.getOverlays();
        overlays.add(overlay);
		
		RedrawHandler handler = new RedrawHandler(this, 30);
		handler.start();
	}

	/*
	 * (非 Javadoc)
	 * @see com.google.android.maps.MapView#onTouchEvent(android.view.MotionEvent)
	 * タッチされたとき、ズームインする
	 */
	@Override
	public boolean onTouchEvent(MotionEvent e){

		if(e.getAction() == MotionEvent.ACTION_DOWN){
		
			MapController mapCon = this.getController();
			boolean zoomed = mapCon.zoomIn();
			if(!zoomed){
				mapCon.setZoom(3);
			}

			return true;
		}else{
			return false;
		}
	}
	
	//回転角のセッタ
	public void setRad(float rad) {
		this.rad = rad;
	}
	
	//センサーの値によって回転して描写する
	public void draw(Canvas canvas) {

		//地図の大きさ
		int h = getHeight();
		int w = getWidth();
		//地図の中心点
		float centerH = h / 2;
		float centerW = w / 2;

		//中心点周りで回転させる
		canvas.rotate(-rad, centerW, centerH);
		
		final float scaleFactor = (float)(Math.sqrt(h * h + w * w) / Math.max(w, h));
		canvas.scale(scaleFactor, scaleFactor, centerW, centerH);
		super.draw(canvas);
	}
	
	/**
	 * レーダーのアルファ値を設定する
	 * @param alpha レーダーのアルファ値
	 */
	public void setOverlayAlpha(int alpha){
		overlay.setBackgroundAlpha(alpha);
	}

	/**
	 * 現在のレーダーのアルファ値を返す
	 * @return レーダーのアルファ値
	 */
	public int getCurrentAlpha(){
		return overlay.getAlpha();
	}
	
}
